/**
 * 创建 即 继承 —— 构造函数继承,精华是call
 * 优点
 *      1、解决了类式继承中在实例化父类的时候无法对父类构造函数内的属性进行初始化的问题
 * 缺点
 *      1、这种继承方式没有涉及到prototype，只能继承共有属性，父亲的原型方法无法被子类继承。
 * 知识点
 *      $1、call
 */
function SuperClass(id) {
    this.books = ['JavaScript', 'html', 'css'];
    this.id = id;
}
SuperClass.prototype.showBooks = function() {
    console.log(this.books);
};

function SubClass(id) {
    SuperClass.call(this, id);
}

var instance1 = new SubClass(10);
var instance2 = new SubClass(20);

instance1.books.push('设计模式');
console.log(instance1.books);//["JavaScript", "html", "css", "设计模式"]
console.log(instance1.id);//10
console.log(instance2.books);//["JavaScript", "html", "css"]
console.log(instance2.id);//20

instance1.showBooks(); // TypeError。因为父类原型上的方法没有被继承
